iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
DevOps

嘿,稍等一下!別急著開發功能,先來打造 Walking Skeleton 吧!系列 第 13

【Walking Skeleton】Day13 - 申請 SSL/TLS 憑證,讓網站能用 HTTPS 訪問

  • 分享至 

  • xImage
  •  

利用 Certbot 自動設定憑證

首先打開 Let’s Encrypt 的官網


這邊寫說如果可以連進去主機用指令操作的話,推薦使用 Certbot 來設定憑證

點一下 Certbot 的連結,然後選則伺服器軟體和作業系統

選完底下會出現 安裝教學

包含一些注意事項

請先購買網域並且設定好 DNS,也就是要可以使用網址開啟網站

EC2 預設的子網域無法申請憑證
EC2 預設的子網域無法申請憑證
EC2 預設的子網域無法申請憑證

AWS 可以使用 CloudFront 設定憑證,不用自己搞東搞西
AWS 可以使用 CloudFront 設定憑證,不用自己搞東搞西
AWS 可以使用 CloudFront 設定憑證,不用自己搞東搞西


第一步

用 SSH 連線進伺服器


恩恩,連好了


第二步

安裝 Snap 套件管理程式

在安裝之前先更新一下套件

sudo apt update && sudo apt upgrade

安裝 snapd

sudo apt install -y snapd

重新開啟終端機,重新連線,確保 Snap 路徑更新

安裝 Snap 核心

sudo snap install core

安裝 hello-world 測試 Snap 是否有正確運作

sudo snap install hello-world

測試 Snap

hello-world


第三步

移除用 apt 安裝的 Certbot

看起來很堅持要用 Snap 呢

完整移除 Certbot

sudo apt purge certbot && sudo apt autoremove --purge

我沒裝過所以啥也沒有移除


第四步

安裝 Certbot

sudo snap install --classic certbot


第五步

建立指令軟連結

sudo ln -s /snap/bin/certbot /usr/bin/certbot


第六步

自動設定或是自己設定

手動設定會快很多,加上 d 參數設定網域

sudo certbot certonly -d ec2-54-238-160-84.ap-northeast-1.compute.amazonaws.com --nginx

這邊不是憑證上的 Email,是用來做安全性通知的,可以輸入 c 跳過,我輸入了我的 Email


閱讀服務條款,沒問題後就輸入 Y 同意


是否要接收其他 Email 通知,N 我不接受


看來一定要有網域才能簽呢,我先去生個子網域

再試一次

sudo certbot certonly -d 2023ironman.miku3920.net --nginx


這是因為沒有設定 DNS,要將 Domain 指向 IP

還有一個原因是昨天的設定把所有「.」開頭的路徑擋掉了

在根目錄設定前加上這段

location ~ /\.well-known/acme-challenge/ {
	allow all;
}

記得重新載入設定檔

sudo systemctl reload nginx

新增一個檔案進去測試看看

不再是 404 表示可以讀取裡面的檔案了


設定成功會像這樣

最後要手動設定憑證

/etc/nginx/sites-available/ 新增一個網域的檔案

然後開啟一個 神奇的網站

選擇伺服器版本就會出現範例的設定,複製貼上到剛剛的檔案

把 default_server 砍掉加上 server_name,也就是你的網域

將剛剛申請好的憑證路徑放到 ssl_certificate, ssl_certificate_key, ssl_trusted_certificate

中間有個檔案要下載,輸入它給的指令,路徑我決定放在 /etc/nginx/cert/dhparam.pem

mkdir /etc/nginx/cert/ && curl https://ssl-config.mozilla.org/ffdhe2048.txt > /etc/nginx/cert/dhparam.pem

這邊加上 root, index, server_name

還有要把 default 的那三段也複製過來

這個註解或砍掉,用預設的 DNS 伺服器解析網址就可以了

建立軟連結,將網站設為啟用

ln -s /etc/nginx/sites-available/2023ironman.miku3920.net /etc/nginx/sites-enabled/2023ironman.miku3920.net

重新載入設定檔

sudo systemctl reload nginx

第七步

測試自動更新憑證

sudo certbot renew --dry-run

查看所有定時任務

systemctl list-timers

第八步

用 HTTPS 開啟網站看看是否生效


上一篇
【Walking Skeleton】Day12 - 設定 Nginx 將機密資料夾變成不可讀取
下一篇
【Walking Skeleton】Day14 - 在 Route 53 上購買域名,讓網站擁有自己的網址
系列文
嘿,稍等一下!別急著開發功能,先來打造 Walking Skeleton 吧!34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言